import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as VueRouter from 'vue-router'
////TODO pinia引入.富文本编辑器是哪个
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
//BUG sa

import App from './App.vue'

// 2. 定义一些路由
// 每个路由都需要映射到一个组件。
// 我们后面再讨论嵌套路由。

// const EventList = () => import('./components/EventList.vue')
const Login = () => import('/src/components/Login.vue')
const SaveEvent = () => import('/src/components/SaveEvent.vue')
const Front = () => import('/src/components/Front.vue')

const Product = () => import('/src/components/Product.vue');
const Order = () => import('/src/components/Order.vue');
const Cart = () => import('/src/components/Cart.vue');
const EventList = () => import('/src/components/ObjList.vue');
const routes = [
  {
    path: '/front', component: Front, name: "main",
    //嵌套路由 https://router.vuejs.org/zh/guide/essentials/nested-routes.html
    children: [
      {
        path: '/about',
        component: SaveEvent,
      },
      {
        // 当 /tabs 匹配成功
        // EventList 将被渲染到 Front 的 <router-view> 内部
        path: '/tabs',
        component: EventList,
      },
      {
        path: '/product',
        component: Product,
      },
      {
        path: '/order',
        component: Order,
      },
      {
        path: '/cart',
        component: Cart,
      },
    ]
  },
  { path: '/login', name: 'login', component: Login },
  { path: '/', name: 'front', component: Front },
]

// 3. 创建路由实例并传递 `routes` 配置
// 你可以在这里输入更多的配置，但我们在这里
// 暂时保持简单
const router = VueRouter.createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见，我们在这里使用 hash 模式。
  history: VueRouter.createWebHashHistory(),
  routes, // `routes: routes` 的缩写
})

//addRoute 添加到存在的路由,作为它的child
//removeRoute 移除存在的路由

//push replace forward go back 等操作的是路由历史,它们和路由本身的添加删除无关,
//它们是操作路由的历史
// router.beforeEach((to, from) => {
//   if (to.name == 'login') {
//     return true;
//   }
//   const user = JSON.parse(localStorage.getItem(`user`));
//   if (user != null) {
//     return true;
//   }
//   return { name: 'login', query: { to: to.fullPath } };
// })

// console.log(import.meta.env.BASE_URL);
//
console.log(import.meta.env.VITE_SG_OSS);
console.log(window.location.host);
console.log(window.location.origin);

//// pinia
const pinia = createPinia();
pinia.use(piniaPluginPersistedstate);

const app = createApp(App);
app.use(ElementPlus);
app.use(router);
app.use(pinia);
//https://cn.vitejs.dev/guide/env-and-mode.html
if (import.meta.env.DEV == true) {
  app.provide(/* 注入名 */ 'h', /* 值 */ import.meta.env.VITE_SHANGJIA)
} else {
  app.provide(/* 注入名 */ 'h', /* 值 */ window.location.origin)
}
app.config.errorHandler = (err, instance, info) => {
  console.log(err);
  console.log(instance);
  console.log(info);
}
app.mount('#app')
